package com.itheima.dubbo.api;

import com.itheima.domain.mongo.Publish;
import com.itheima.domain.vo.PageResult;

import java.util.List;

/**
 * @author 阿鹏
 * @date 2021/1/28 14:06
 */

public interface PublishApi {

    /**
     * 发布动态
     * @param publish 动态信息
     */
    String save(Publish publish);

    /**
     * 查询好友的动态-当前用户的时间线
     * @param page 页码
     * @param pagesize 查询几条
     * @param userId 用户id
     * @return 用户userId的好友动态
     */
    PageResult<Publish> findByTimeline(int page, int pagesize, long userId);

    /**
     * 查询推荐的动态-给某用户推荐的好友动态
     * @param page 页码
     * @param pagesize 查询几条
     * @param userId 用户id
     * @return 给userId推荐的动态信息
     */
    PageResult<Publish> findByRecommend(int page, int pagesize, long userId);

    /**
     * 查询相册-查询某一用户的相册（动态）
     * @param page 页码
     * @param pagesize 查询几条
     * @param userId 用户id
     * @return userId的相册
     */
    PageResult<Publish> findAlbumList(int page, int pagesize, long userId);

    /**
     * 查询单个动态
     * @param publishId 动态的id
     * @return 动态对象
     */
    Publish findById(String publishId);

    /**
     * 分页查询动态列表
     * @param page 页码
     * @param pagesize 查询几条
     * @param uid 用户id
     * @param state 动态的审核状态
     * @return 分页查询结果
     */
    PageResult<Publish> findPublishList(int page, int pagesize, Long uid, Integer state);

    /**
     * 更新审核状态
     * @param publish 动态内容
     */
    void updateState(Publish publish);

    List<Publish> findByPidList(List<Long> pidList);

    void removePublishByPid(String pid);

    void removeAlbumPublish(Long userId, String pid);
}
